#include <stdio.h>
#include <process.h>
#include <string.h>
#include <dir.h>
char curdir[MAXDIR];
int curdisk,c;
char disk;

char inttochar(int),*getstring(char *);
int chartoint(char);
int str_len(char *);
void str_upper(char *ss),changdir(char **),checkstring(char *);
void nulstring(char *cdir);

void main()
{
	char *s;
	//char disk;
	char *q="EXIT";
	int iresult;
	nulstring(curdir);
	curdisk=getdisk();	//get current disk charactor
	disk=inttochar(curdisk);
	if(getcurdir(0,curdir)){perror("getcurdir()");exit(1);}
	puts("Welcome to use Qdos personal,version 1.01");
	puts("Copyright by qsoftware in 8/3/2005\n");
	printf("%c:\\%s>",disk,curdir);
	do
	{       //chdir setdisk
		c=-1;
		gets(s);
		//printf("%d",strlen(s));
		strupr(s);
		if(*q==*s) exit(1);
		//printf("%s",s);
		checkstring(s); 	//change drive
		//printf("%d",iresult);
		if(c==-1){system(s); printf("%c:\\%s>",disk,curdir);}
	}while(1);
}
char inttochar(int disknum)	//put disk number to charactor
{	char disk;
	disk=(char)(disknum+65);
	return disk;
}

int chartoint(char disk)
{	int disknum;
	disknum=(int)disk-65;
	return disknum;
}

void checkstring(char *ss)
{   char *ps,*pstr;
	ps=ss;
	//int c;
	char nowdir[MAXDIR];

	if(strlen(ps)<2){
		system("HELP");
		printf("%c:\\%s>",disk,curdir);
		//return 99;
		c=98;
		}
	if(strlen(ps)==2 && ps[1]==':'){
		 if(ss[0]>='A' && ss[0]<='Z'){
			c=chartoint(ps[0]);
			system(ss);
			nulstring(curdir);
			setdisk(c);
			curdisk=getdisk();
			chdir("ps");
			disk=inttochar(curdisk);
			getcurdir(curdisk,curdir);
			printf("%c:\\%s>",disk,curdir);
			}}
	if(strlen(ps)>2 && strstr(ps,"CD")==ps)
		{

			if(strcmp("CD\\",ps)==0){
				chdir("\\");
				nulstring(curdir);
				getcurdir(curdisk,curdir);
				printf("%c:\\%s>",disk,curdir);
				system(ss);
				c=99;
				}

			if(strcmp("CD ..",ps)==0){
				chdir("..");
				system(ss);
				getcurdir(curdisk,curdir);
				printf("%c:\\%s>",disk,curdir);
				c=100;
				}
			else{
				//pstr=getstring(ps);
				chdir(ps);
				system(ss);
				getcurdir(curdisk,curdir);
				//strcat(curdir,"\\");
				//strcat(curdir,pstr);
				printf("%c:\\%s>",disk,curdir);
				c=101;
				}
			//return c;
		 }
	//else c=-1;
	//return c;
}

void changdir(char **ss)
{
	printf("%s,%s",ss[0],ss[1]);
}

char *getstring(char *pstr)
{
	char *p;
	p=pstr;
	while(*p)
	{
		if(*p==' ') break;
		p++;
	}
	p++;
	return p;
}

void nulstring(char *cdir)
{
	int i;
	for(i=0;i<MAXDIR;i++);
		cdir[i]=NULL;
}